1. Field of the Invention
The present invention relates data transfer between servers and remote entities including remote peripherals. In one example, the present invention relates to methods and apparatus for efficiently transferring data between servers and remote peripherals such as network interface cards (NICs), host bus adapters (HBAs), and cryptographic accelerators.
2. Description of Related Art
A server or computing system generally includes one or more processors, memory, and peripheral components and peripheral interfaces. Examples of peripheral components include cryptographic accelerators, graphics accelerators, and eXtensible Markup Language (XML) accelerators. Examples of peripheral interfaces include network interface cards (NIC), serial ATA (SATA) adapters, and host bus adapters (HBA). Processors, memory, and peripherals are often connected using one or more buses and bus bridges. To provide fault-tolerance, individual servers are often configured with redundant resources.
Because resources such as peripheral components and peripheral interfaces are assigned on a per server or a per processor basis, other servers do not typically have access to these resources. In order to provide adequate resources for each server, resources are typically over-provisioned. For example, more hardware acceleration is provided than is typically needed. More network interface bandwidth is allocated than is typically used simply to handle worst-case or expected worst-case scenarios. Resources are over-provisioned resulting in overall waste and low utilization. Resource assignment on a per server or a per processor basis also limits the ability to reconstruct or reconfigure a resource environment.
A variety of peripherals are sometimes provided remotely over a network. However, protocols for communications between servers and remote peripherals are often inefficient, inadequate, or even unavailable. Consequently, the techniques and mechanisms of the present invention allow efficient data transfer between servers and remote peripherals over a networking technology.